/**
 * axios配置
 */
import axios from 'axios';
import {Message} from "element-ui";
import Router from "@/router";
import {getToken} from "@/api/token";


const my_requests = axios.create({
    baseURL: '/api',  // 这里与配置代理的api字符相同
    timeout:50000
});


// request请求拦截器
my_requests.interceptors.request.use(
    (config) => {
        // 除了登录和注册的请求,请求体都需携带token   是否携带  后端会判断
        if (config.url!== '/login' && config.url!== '/login/register') {
            const token =getToken();
            if (token) {
                // 在headers的“Authorization”字段里设置token
                config.headers.Authorization = `Bearer ${token}`;
            }
        }
        return config;
    },
    (error) => {
        return Promise.reject(error);
    }
)
// 响应拦截器
my_requests.interceptors.response.use(
    res => {
        return  res.data
        },
    error => {
        // 只打印error不显示是一个对象，我他妈还以为就是个字符串呢
        if(error.response){
            const statusCode = error.response.data.statusCode
            const errorMessage = error.response.data.message
            console.log(`状态码: ${statusCode}, 错误原因: ${errorMessage}`);
            Message.error(`状态码: ${statusCode}, 错误原因: ${errorMessage}`)
            // 所有error 均重新登录
            Router.push('/').then(r => {})
        }
        // 抛出错误以在后续的代码中进行处理（如果需要）--这个抛错是直接遮罩全屏的
        // return Promise.reject(error)
    }
)
export default my_requests